home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 April: Mac OS SDK / Dev.CD Apr 00 SDK1.toast / Development Kits / Mac OS / URL Access 1.0.1 SDK / URLAccess.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-06-03  |  11.0 KB  |  324 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        URL Access.h
  3.  
  4.      Contains:    URL Access interfaces.
  5.  
  6.      Version:    1.0
  7.  
  8.      Copyright:    © 1998 by Apple Computer, Inc., all rights reserved
  9.  
  10.      Bugs?:        Please include the the file and version information (from above) with
  11.                  the problem description.  Developers belonging to one of the Apple
  12.                  developer programs can submit bug reports to:
  13.  
  14.                      devsupport@apple.com
  15.  
  16. */
  17. #ifndef __URLACCESS__
  18. #define __URLACCESS__
  19.  
  20. #ifndef __TYPES__
  21. #include <Types.h>
  22. #endif
  23. #ifndef __FILES__
  24. #include <Files.h>
  25. #endif
  26. #ifndef __CODEFRAGMENTS__
  27. #include <CodeFragments.h>
  28. #endif
  29.  
  30. /* Data structures and types */
  31.  
  32.  
  33. #if PRAGMA_ONCE
  34. #pragma once
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_IMPORT
  42. #pragma import on
  43. #endif
  44.  
  45. #if PRAGMA_STRUCT_ALIGN
  46.     #pragma options align=mac68k
  47. #elif PRAGMA_STRUCT_PACKPUSH
  48.     #pragma pack(push, 2)
  49. #elif PRAGMA_STRUCT_PACK
  50.     #pragma pack(2)
  51. #endif
  52.  
  53. typedef struct OpaqueURLReference*         URLReference;
  54.  
  55.  
  56. enum {
  57.     kURLReplaceExistingFlag        = 1 << 0,
  58.     kURLBinHexFileFlag            = 1 << 1,                        /* Binhex before uploading if necessary*/
  59.     kURLExpandFileFlag            = 1 << 2,                        /* Use StuffIt engine to expand file if necessary*/
  60.     kURLDisplayProgressFlag        = 1 << 3,
  61.     kURLDisplayAuthFlag            = 1 << 4,                        /* Display auth dialog if guest connection fails*/
  62.     kURLUploadFlag                = 1 << 5,                        /* Do an upload instead of a download*/
  63.     kURLIsDirectoryHintFlag        = 1 << 6,                        /* Hint: the URL is a directory*/
  64.     kURLDoNotTryAnonymousFlag    = 1 << 7,                        /* Don't try to connect anonymously before getting logon info*/
  65.     kURLDirectoryListingFlag    = 1 << 8,                        /* Download the directory listing, not the whole directory*/
  66.     kURLReservedFlag            = 1 << 31                        /* reserved for Apple internal use*/
  67. };
  68.  
  69. typedef UInt32                             URLOpenFlags;
  70.  
  71. enum {
  72.     kURLNullState                = 0,
  73.     kURLInitiatingState            = 1,
  74.     kURLLookingUpHostState        = 2,                            /* NOT IN EXT HEADER*/
  75.     kURLConnectingState            = 3,                            /* NOT IN EXT HEADER*/
  76.     kURLResourceFoundState        = 4,
  77.     kURLDownloadingState        = 5,
  78.     kURLDataAvailableState        = 0x10 + kURLDownloadingState,
  79.     kURLTransactionCompleteState = 6,
  80.     kURLErrorOccurredState        = 7,
  81.     kURLAbortingState            = 8,
  82.     kURLCompletedState            = 9,
  83.     kURLUploadingState            = 10
  84. };
  85.  
  86. typedef UInt32                             URLState;
  87.  
  88. enum {
  89.     kURLInitiatedEvent            = kURLInitiatingState,
  90.     kURLResourceFoundEvent        = kURLResourceFoundState,
  91.     kURLDownloadingEvent        = kURLDownloadingState,
  92.     kURLAbortInitiatedEvent        = kURLAbortingState,
  93.     kURLCompletedEvent            = kURLCompletedState,
  94.     kURLErrorOccurredEvent        = kURLErrorOccurredState,
  95.     kURLDataAvailableEvent        = kURLDataAvailableState,
  96.     kURLTransactionCompleteEvent = kURLTransactionCompleteState,
  97.     kURLUploadingEvent            = kURLUploadingState,
  98.     kURLSystemEvent                = 29,
  99.     kURLPercentEvent            = 30,
  100.     kURLPeriodicEvent            = 31,
  101.     kURLPropertyChangedEvent    = 32
  102. };
  103.  
  104. typedef UInt32                             URLEvent;
  105.  
  106. enum {
  107.     kURLInitiatedEventMask        = 1 << (kURLInitiatedEvent - 1),
  108.     kURLResourceFoundEventMask    = 1 << (kURLResourceFoundEvent - 1),
  109.     kURLDownloadingMask            = 1 << (kURLDownloadingEvent - 1),
  110.     kURLUploadingMask            = 1 << (kURLUploadingEvent - 1),
  111.     kURLAbortInitiatedMask        = 1 << (kURLAbortInitiatedEvent - 1),
  112.     kURLCompletedEventMask        = 1 << (kURLCompletedEvent - 1),
  113.     kURLErrorOccurredEventMask    = 1 << (kURLErrorOccurredEvent - 1),
  114.     kURLDataAvailableEventMask    = 1 << (kURLDataAvailableEvent - 1),
  115.     kURLTransactionCompleteEventMask = 1 << (kURLTransactionCompleteEvent - 1),
  116.     kURLSystemEventMask            = 1 << (kURLSystemEvent - 1),
  117.     kURLPercentEventMask        = 1 << (kURLPercentEvent - 1),
  118.     kURLPeriodicEventMask        = 1 << (kURLPeriodicEvent - 1),
  119.     kURLPropertyChangedEventMask = 1 << (kURLPropertyChangedEvent - 1),
  120.     kURLAllBufferEventsMask        = kURLDataAvailableEventMask + kURLTransactionCompleteEventMask,
  121.     kURLAllNonBufferEventsMask    = kURLInitiatedEventMask + kURLDownloadingMask + kURLUploadingMask + kURLAbortInitiatedMask + kURLCompletedEventMask + kURLErrorOccurredEventMask + kURLPercentEventMask + kURLPeriodicEventMask + kURLPropertyChangedEventMask,
  122.     kURLAllEventsMask            = (long)0xFFFFFFFF
  123. };
  124.  
  125. typedef UInt32                             URLEventMask;
  126.  
  127. struct URLCallbackInfo {
  128.     UInt32                             version;
  129.     URLReference                     urlRef;
  130.     const char *                    property;
  131.     UInt32                             currentSize;
  132.     EventRecord *                    systemEvent;
  133. };
  134. typedef struct URLCallbackInfo            URLCallbackInfo;
  135. static const char* kURLURL                        = "URLString";
  136. static const char* kURLResourceSize                = "URLResourceSize";
  137. static const char* kURLLastModifiedTime            = "URLLastModifiedTime";
  138. static const char* kURLMIMEType                    = "URLMIMEType";
  139. static const char* kURLFileType                    = "URLFileType";
  140. static const char* kURLFileCreator                = "URLFileCreator";
  141. static const char* kURLCharacterSet                = "URLCharacterSet";
  142. static const char* kURLResourceName                = "URLResourceName";
  143. static const char* kURLHost                        = "URLHost";
  144. static const char* kURLAuthType                    = "URLAuthType";
  145. static const char* kURLUserName                    = "URLUserName";
  146. static const char* kURLPassword                    = "URLPassword";
  147. static const char* kURLStatusString                = "URLStatusString";
  148. static const char* kURLIsSecure                    = "URLIsSecure";
  149. static const char* kURLCertificate                = "URLCertificate";
  150. static const char* kURLTotalItems                = "URLTotalItems";
  151. /* http and https properties*/
  152. static const char* kURLHTTPRequestMethod        = "URLHTTPRequestMethod";
  153. static const char* kURLHTTPRequestHeader        = "URLHTTPRequestHeader";
  154. static const char* kURLHTTPRequestBody            = "URLHTTPRequestBody";
  155. static const char* kURLHTTPRespHeader            = "URLHTTPRespHeader";
  156. static const char* kURLHTTPUserAgent            = "URLHTTPUserAgent";
  157. static const char* kURLHTTPRedirectedURL        = "URLHTTPRedirectedURL";
  158. /* authentication type flags*/
  159.  
  160. enum {
  161.     kUserNameAndPasswordFlag    = 0x00000001
  162. };
  163.  
  164. EXTERN_API( OSStatus )
  165. URLGetURLAccessVersion            (UInt32 *                returnVers);
  166.  
  167. #if TARGET_RT_MAC_CFM
  168. #ifdef __cplusplus
  169.     inline pascal Boolean URLAccessAvailable() { return ((URLGetURLAccessVersion != (void*)kUnresolvedCFragSymbolAddress) ); }
  170. #else
  171.     #define URLAccessAvailable()     ((URLGetURLAccessVersion != (void*)kUnresolvedCFragSymbolAddress) )
  172. #endif
  173. #endif  /* TARGET_RT_MAC_CFM */
  174.  
  175. typedef CALLBACK_API( OSStatus , URLNotifyProcPtr )(void *userContext, URLEvent event, URLCallbackInfo *callbackInfo);
  176. typedef CALLBACK_API( OSStatus , URLSystemEventProcPtr )(void *userContext, EventRecord *event);
  177. typedef STACK_UPP_TYPE(URLNotifyProcPtr)                         URLNotifyUPP;
  178. typedef STACK_UPP_TYPE(URLSystemEventProcPtr)                     URLSystemEventUPP;
  179. enum { uppURLNotifyProcInfo = 0x00000FF0 };                     /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  180. enum { uppURLSystemEventProcInfo = 0x000003F0 };                 /* pascal 4_bytes Func(4_bytes, 4_bytes) */
  181. #define NewURLNotifyProc(userRoutine)                             (URLNotifyUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppURLNotifyProcInfo, GetCurrentArchitecture())
  182. #define NewURLSystemEventProc(userRoutine)                         (URLSystemEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppURLSystemEventProcInfo, GetCurrentArchitecture())
  183. #define CallURLNotifyProc(userRoutine, userContext, event, callbackInfo)  CALL_THREE_PARAMETER_UPP((userRoutine), uppURLNotifyProcInfo, (userContext), (event), (callbackInfo))
  184. #define CallURLSystemEventProc(userRoutine, userContext, event)  CALL_TWO_PARAMETER_UPP((userRoutine), uppURLSystemEventProcInfo, (userContext), (event))
  185. EXTERN_API( OSStatus )
  186. URLSimpleDownload                (const char *            url,
  187.                                  FSSpec *                destination,
  188.                                  Handle                 destinationHandle,
  189.                                  URLOpenFlags             openFlags,
  190.                                  URLSystemEventProcPtr     eventProc,
  191.                                  void *                    userContext);
  192.  
  193. EXTERN_API( OSStatus )
  194. URLDownload                        (URLReference             urlRef,
  195.                                  FSSpec *                destination,
  196.                                  Handle                 destinationHandle,
  197.                                  URLOpenFlags             openFlags,
  198.                                  URLSystemEventProcPtr     eventProc,
  199.                                  void *                    userContext);
  200.  
  201. EXTERN_API( OSStatus )
  202. URLSimpleUpload                    (const char *            url,
  203.                                  const FSSpec *            source,
  204.                                  URLOpenFlags             openFlags,
  205.                                  URLSystemEventProcPtr     eventProc,
  206.                                  void *                    userContext);
  207.  
  208. EXTERN_API( OSStatus )
  209. URLUpload                        (URLReference             urlRef,
  210.                                  const FSSpec *            source,
  211.                                  URLOpenFlags             openFlags,
  212.                                  URLSystemEventProcPtr     eventProc,
  213.                                  void *                    userContext);
  214.  
  215. EXTERN_API( OSStatus )
  216. URLNewReference                    (const char *            url,
  217.                                  URLReference *            urlRef);
  218.  
  219. EXTERN_API( OSStatus )
  220. URLDisposeReference                (URLReference             urlRef);
  221.  
  222. EXTERN_API( OSStatus )
  223. URLOpen                            (URLReference             urlRef,
  224.                                  FSSpec *                fileSpec,
  225.                                  URLOpenFlags             openFlags,
  226.                                  URLNotifyProcPtr         notifyProc,
  227.                                  URLEventMask             eventRegister,
  228.                                  void *                    userContext);
  229.  
  230. EXTERN_API( OSStatus )
  231. URLAbort                        (URLReference             urlRef);
  232.  
  233. EXTERN_API( OSStatus )
  234. URLGetDataAvailable                (URLReference             urlRef,
  235.                                  Size *                    dataSize);
  236.  
  237. EXTERN_API( OSStatus )
  238. URLGetBuffer                    (URLReference             urlRef,
  239.                                  void **                buffer,
  240.                                  Size *                    bufferSize);
  241.  
  242. EXTERN_API( OSStatus )
  243. URLReleaseBuffer                (URLReference             urlRef,
  244.                                  void *                    buffer);
  245.  
  246. EXTERN_API( OSStatus )
  247. URLGetProperty                    (URLReference             urlRef,
  248.                                  const char *            property,
  249.                                  void *                    propertyBuffer,
  250.                                  Size                     bufferSize);
  251.  
  252. EXTERN_API( OSStatus )
  253. URLGetPropertySize                (URLReference             urlRef,
  254.                                  const char *            property,
  255.                                  Size *                    propertySize);
  256.  
  257. EXTERN_API( OSStatus )
  258. URLSetProperty                    (URLReference             urlRef,
  259.                                  const char *            property,
  260.                                  void *                    propertyBuffer,
  261.                                  Size                     bufferSize);
  262.  
  263. EXTERN_API( OSStatus )
  264. URLGetCurrentState                (URLReference             urlRef,
  265.                                  URLState *                state);
  266.  
  267. EXTERN_API( OSStatus )
  268. URLGetError                        (URLReference             urlRef,
  269.                                  OSStatus *                urlError);
  270.  
  271.  
  272. EXTERN_API( OSStatus )
  273. URLIdle                            (void);
  274.  
  275. EXTERN_API( OSStatus )
  276. URLGetFileInfo                    (StringPtr                 fName,
  277.                                  OSType *                fType,
  278.                                  OSType *                fCreator);
  279.  
  280.  
  281. /* Error Codes */
  282.  
  283. enum {
  284.     kURLInternetAccessErrorCodeBase = -30770,
  285.     kURLInvalidURLReferenceError = kURLInternetAccessErrorCodeBase - 0,
  286.     kURLProgressAlreadyDisplayedError = kURLInternetAccessErrorCodeBase - 1,
  287.     kURLDestinationExistsError    = kURLInternetAccessErrorCodeBase - 2,
  288.     kURLInvalidURLError            = kURLInternetAccessErrorCodeBase - 3,
  289.     kURLUnsupportedSchemeError    = kURLInternetAccessErrorCodeBase - 4,
  290.     kURLServerBusyError            = kURLInternetAccessErrorCodeBase - 5,
  291.     kURLAuthenticationError        = kURLInternetAccessErrorCodeBase - 6,
  292.     kURLPropertyNotYetKnownError = kURLInternetAccessErrorCodeBase - 7,
  293.     kURLUnknownPropertyError    = kURLInternetAccessErrorCodeBase - 8,
  294.     kURLPropertyBufferTooSmallError = kURLInternetAccessErrorCodeBase - 9,
  295.     kURLUnsettablePropertyError    = kURLInternetAccessErrorCodeBase - 10,
  296.     kURLInvalidCallError        = kURLInternetAccessErrorCodeBase - 11,
  297.     kURLFileEmptyError            = kURLInternetAccessErrorCodeBase - 13,
  298.     kURLExtensionFailureError    = kURLInternetAccessErrorCodeBase - 15,
  299.     kURLInvalidConfigurationError = kURLInternetAccessErrorCodeBase - 16,
  300.     kURLAccessNotAvailableError    = kURLInternetAccessErrorCodeBase - 17
  301. };
  302.  
  303.  
  304. #if PRAGMA_STRUCT_ALIGN
  305.     #pragma options align=reset
  306. #elif PRAGMA_STRUCT_PACKPUSH
  307.     #pragma pack(pop)
  308. #elif PRAGMA_STRUCT_PACK
  309.     #pragma pack()
  310. #endif
  311.  
  312. #ifdef PRAGMA_IMPORT_OFF
  313. #pragma import off
  314. #elif PRAGMA_IMPORT
  315. #pragma import reset
  316. #endif
  317.  
  318. #ifdef __cplusplus
  319. }
  320. #endif
  321.  
  322. #endif /* __URLACCESS__ */
  323.  
  324.